home *** CD-ROM | disk | FTP | other *** search
/ Everything For A Hacker / 19990506-[HACK].iso / SECURE / CRYPT / GOST.ZIP / SIMPLE~.ASM < prev    next >
Assembly Source File  |  1998-03-07  |  4KB  |  112 lines

  1. ;------------------------------------------------------
  2. ; ÿ¿Σα«óá¡¿Ñ ¼áßß¿óá ñá¡¡δσ ó αѪ¿¼Ñ »α«ßΓ«⌐ ºá¼Ñ¡δ
  3. ; ß«ú½áß¡« ¬α¿»Γ«á½ú«α¿Γ¼π âÄæÆ 28147-89.
  4. ; --------> ñ½∩ 32-í¿Γ«óδσ »α«µÑßß«α«ó 80x86 <---------
  5. ; Éáºαáí«Γá½ é¿¡«¬πα«ó Ç.₧., ú.î«ß¬óá, 1992-1995 ú.
  6. ; (c) 1992-1995, æó«í«ñ¡«Ñ ¬«»¿α«óá¡¿Ñ ¿ ¿ß»«½∞º«óá¡¿Ñ.
  7. ;------------------------------------------------------
  8. ; Åáαá¼ÑΓαδ  »α¿  ó맮óÑ  »ÑαÑñáεΓß∩  ó  ßΓφ¬Ñ :
  9. ; æ¼ÑΘÑ¡¿Ñ  ÉẼÑα    Å  Ç  É  Ç  î  à  Æ  É
  10. ; NEAR FAR
  11. ;  2   4      4     FAR-áñαÑß ¬½ετá (è)
  12. ;  6   8      4     FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ (ì)
  13. ; 10  12      4     FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡ (Æç)
  14. ; 14  16      2     τ¿ß½« Φ¿ΣαπѼδσ 8-íá⌐Γ«óδσ í½«¬«ó
  15. ;*16  18      2     ñ½¿¡á ¬½ετá ó ñó«⌐¡δσ ß½«óáσ
  16. ;                   (ß¼. óáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩)
  17. ;------------------------------------------------------
  18. ; ç¡áτÑ¡¿∩ »áαá¼ÑΓα«ó »α¿ óδσ«ñÑ:
  19. ; - áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ π¬áºδóδÑΓ  ¡á »Ñαóδ⌐ íá⌐Γ
  20. ;   »«ß½Ñ »«ß½Ññ¡Ñú« «íαáí«Γá¡¡«ú« í½«¬á;
  21. ; - áñαÑßá ¬½ετá ¿ Γáí½¿µδ ºá¼Ñ¡ ¡Ñ ¿º¼Ñ¡¿½¿ß∞;
  22. ; - ßτÑΓτ¿¬ Φ¿ΣαπѼδσ í½«¬«ó αáóÑ¡ 0;
  23. ;------------------------------------------------------
  24. ; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ : óßÑ
  25. ;------------------------------------------------------
  26. ; çá¼Ñτá¡¿∩:
  27. ; 1.çáΦ¿Σα«óá¡¿Ñ ¿½¿  αáßΦ¿Σα«óá¡¿Ñ ºáñáÑΓß∩ »ÑαÑñáτÑ⌐
  28. ; ß««ΓóÑΓßΓóπεΘÑú«  áñαÑßá  ¬½ετá - »«α∩ñ«¬  φ½Ñ¼Ñ¡Γ«ó
  29. ; ó   ¬½ετáσ  ºáΦ¿Σα«óá¡¿∩  ¿  αáßΦ¿Σα«óá¡¿∩   óºá¿¼¡«
  30. ; «íαáΓ¡δ⌐.
  31. ; 2.æ«ú½áß¡«  âÄæÆ 28147-89  φë༫ñπ½∞ ¼«ªÑΓ ¿ß»«½∞-
  32. ; º«óáΓ∞ß∩ Γ«½∞¬«  ñ½∩ Φ¿Σα«óá¡¿∩  ¬½ετÑó«⌐ ¿¡Σ«α¼áµ¿¿
  33. ; (¿  ß¿¡σα«»«ß佬¿  ñ½∩  úá¼¼¿α«óá¡¿∩).
  34. ;------------------------------------------------------
  35. ; éáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩
  36. ; - æ¿¼ó«½ KeySize:
  37. ; -- æ¿¼ó«½ ¡Ñ«»αÑñѽѡ:Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ αáºóÑα¡πΓδ⌐
  38. ;    ¬½ετ αẼÑα«¼ ó 32 ¬½ετÑóδσ φ½Ñ¼Ñ¡Γá;
  39. ; -- æ¿¼ó«½ «»αÑñѽѡ ¿ ¿¼ÑÑΓ τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ:
  40. ;    Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ ¬½ετ π¬áºá¡¡«ú« αẼÑαá (ó
  41. ;    ¬½ετÑóδσ φ½Ñ¼Ñ¡Γáσ);
  42. ; -- æ¿¼ó«½ «»αÑñѽѡ, ¿¼ÑÑΓ »πßΓ«Ñ º¡áτÑ¡¿Ñ:
  43. ;    αẼÑα ¬½ετá »ÑαÑñáÑΓß∩ ¬á¬ »«ß½Ññ¡¿⌐ »áαá¼ÑΓα
  44. ;    Σπ¡¬µ¿¿.
  45. ;------------------------------------------------------
  46. ;
  47. wptr    EQU     <word ptr>
  48. IFNDEF KeySize
  49. _keysize EQU    32      ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
  50. ELSE
  51. IFDIF KeySize,<>
  52. _keysize EQU    KeySize ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
  53. ENDIF
  54. ENDIF
  55. ;
  56.     .model  small,C
  57.         .code    $gost
  58.     .386
  59.     extrn    gost386:near
  60. simple  proc
  61.         public  simple
  62. ; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
  63.         a=10            ; 2+1+1+1 ß½«ó ó ßΓφ¬Ñ
  64. IF      (TYPE simple) EQ 0FFFEh
  65.         a=a+2           ; Ñß½¿ simple - far-»α«µÑñπαá
  66. ENDIF
  67. ; çáñáѼ  ß¼ÑΘÑ¡¿Ñ  áαúπ¼Ñ¡Γ«ó  ó  ßΓφ¬Ñ
  68. ;
  69. key=    2+a             ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ¬½ετá
  70. syn=    6+a             ; ß¼ÑΘÑ¡¿Ñ áñαÑßá ñá¡¡δσ
  71. chg=    10+a            ; ß¼ÑΘÑ¡¿Ñ áñαÑßá Γáí½. ºá¼Ñ¡
  72. len=    14+a            ; ß¼ÑΘÑ¡¿Ñ ßτÑΓτ¿¬á í½«¬«ó
  73. IFNDEF _keysize
  74. keylen= 16+a
  75. ENDIF
  76. ;
  77. ; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó »« ß«ú½áΦÑ¡¿∩¼ Turbo C
  78.         push    EBP
  79.         push    DS
  80.         push    SI
  81.         push    DI
  82. ; ìáτá½∞¡á∩ ºáúαπº¬á π¬áºáΓѽÑ⌐
  83.         mov     ES,key+2[ESP]   ; ES <- ßÑú¼Ñ¡Γ ¬½ετá
  84.         lds     BX,chg[ESP]     ; DS:BX <- áñαÑß Æç
  85.         lfs     DI,syn[ESP]     ; FS <- ßÑú¼Ñ¡Γ ¡áº¡.
  86. ; çáúαπº¬á í½«¬á ñá¡¡δσ
  87. circle: mov     EAX,FS:[DI]     ; EAX <- S1
  88.         mov     EDX,FS:4[DI]    ; EDX <- S2
  89. ; é맮ó »α«ßΓ«⌐ ºá¼Ñ¡δ;
  90. IFDEF _keysize
  91.         mov     CX,_keysize     ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  92. ELSE
  93.         mov     CX,keylen[ESP]  ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  94. ENDIF
  95.         mov     SI,key[ESP]     ; ES:SI <- áñαÑß ¬½ετá
  96.         call    gost386         ; <Φáú »α«ßΓ«⌐ ºá¼Ñ¡δ>
  97. ; çỿß∞  αѺπ½∞ΓáΓá  ¡á  ¼ÑßΓ«
  98.         mov     FS:4[DI],EAX    ; çá¡«ß¿¼ αѺπ½∞ΓáΓ
  99.         mov     FS:[DI],EDX     ;   ¡á Ñú« ¼ÑßΓ«
  100. ; Äαúá¡¿ºáµ¿∩ µ¿¬½á
  101.         add     DI,8            ; ¬«ααѬµ¿∩ áñαÑßᠡạ.
  102.         dec     wptr len[ESP]   ; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á  í.
  103.         jnz     circle          ; µ¿¬½¿¼ß∩
  104. ; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
  105.     pop     DI
  106.     pop     SI
  107.     pop     DS
  108.     pop     EBP
  109.     ret
  110. simple  endp
  111.     end
  112.